package com.vecspace.database.model;

import java.util.List;

import com.vecspace.data.model.IPagination;
import com.vecspace.data.model.Pagination;


/**SQL查询结果
 * T: 数据列表中的对象，可以是POJO，也可以是Map类
 * R：聚合数据对象，可以是POJO，也可以是Map类
 * @version 1.0
 * @author wanghua
 * @reviewer  
 * @createTime 2021年9月29日 下午1:29:00
 */
public class QueryResult<T> {
	
	public QueryResult() {
		
	}
	
	public QueryResult(List<T> entities) {
		this.setEntities(entities);
	}
	
	public QueryResult(List<T> entities, IPagination pagination) {
		this(entities);
		this.setPagination(pagination);
	}
	
	/**分页信息*/
	protected IPagination pagination;
	
	/**当前页的记录集合*/
	protected List<T> entities;
		
	/**分页信息*/
	public IPagination getPagination() {
		return pagination;
	}
	/**分页信息*/
	public void setPagination(IPagination pagination) {
		this.pagination = pagination;
	}
	/**分页信息*/
	public void setPagination(int pageIndex, int pageSize, int totalRows) {
		this.pagination = new Pagination(pageIndex, pageSize, totalRows);
	}
	
	/**当前页的记录集合*/
	public List<T> getEntities() {
		return entities;
	}
	/**当前页的记录集合*/
	public void setEntities(List<T> entities) {
		this.entities = entities;
	}	
	/** 获取查询结果的第一个记录，如果没有则返回null*/
	public T getFirstEntity() {
		if(entities == null || entities.size() ==0)return null;
		return entities.get(0);
	}
	
	/**是否分页
	 * 
	 * @return 
	 * @author wanghua
	 * @reviewer  
	 * @createTime 2021年9月29日 下午2:21:00
	 */
	public boolean isPaged() {
		return pagination != null && pagination.isPaged();
	}
}

